home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / vbdatabs / pod.h < prev    next >
C/C++ Source or Header  |  1999-03-14  |  6KB  |  147 lines

  1. // ------------------------------- //
  2. // -------- Start of File -------- //
  3. // ------------------------------- //
  4. // ----------------------------------------------------------- //
  5. // C++ Header File Name: pod.h 
  6. // Compiler Used: MSVC40, DJGPP 2.7.2.1, GCC 2.7.2.1, HP CPP 10.24
  7. // Produced By: Doug Gaer    
  8. // File Creation Date: 09/18/1997 
  9. // Date Last Modified: 03/15/1999
  10. // Copyright (c) 1997 Douglas M. Gaer
  11. // ----------------------------------------------------------- // 
  12. // ---------- Include File Description and Details  ---------- // 
  13. // ----------------------------------------------------------- // 
  14. /*
  15. The VBD C++ classes are copyright (c) 1997, by Douglas M. Gaer.
  16. All those who put this code or its derivatives in a commercial
  17. product MUST mention this copyright in their documentation for
  18. users of the products in which this code or its derivative
  19. classes are used. Otherwise, you have the freedom to redistribute
  20. verbatim copies of this source code, adapt it to your specific
  21. needs, or improve the code and release your improvements to the
  22. public provided that the modified files carry prominent notices
  23. stating that you changed the files and the date of any change.
  24.  
  25. THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.
  26. THE ENTIRE RISK OF THE QUALITY AND PERFORMANCE OF THIS SOFTWARE
  27. IS WITH YOU. SHOULD ANY ELEMENT OF THIS SOFTWARE PROVE DEFECTIVE,
  28. YOU WILL ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR
  29. CORRECTION.
  30.  
  31. The (P)ersistent (O)bject (D)atabase manager is used to manage
  32. the file pointers to VBD files.
  33.  
  34. Changes:
  35. ================================================================
  36. 02/03/1998 - Modified POD constructors, Open() and Create()
  37. functions. Modified versions will now automatically add the
  38. file extension by default to the database and index files.
  39. Changed by: Doug Gaer
  40.  
  41. 02/03/1998 - Added Btree class to create index files.
  42. Changed by: Doug Gaer
  43.  
  44. 02/03/1998 - Modified POD constructors and added new functions
  45. to work with index files.
  46. Changed by: Doug Gaer
  47. ================================================================
  48. */
  49. // ----------------------------------------------------------- //   
  50. #ifndef __POD_HPP
  51. #define __POD_HPP
  52.  
  53. #include "vbdfile.h"
  54. #include "ustring.h"
  55. #include "btree.h"
  56.  
  57. // (P)ersistent (O)bject (D)atabase manager class
  58. class POD
  59. {
  60. public:
  61.   // 02/03/1998 These constructors were modified to work with index 
  62.   // files. These constructors will automatically add file extensions 
  63.   // to the database and index files.
  64.   POD(UString &fname, VBDFile::AccessMode mode = VBDFile::READWRITE,
  65.       int use_index = 0, int cache_size = 8);
  66.   POD(const char *fname, VBDFile::AccessMode mode = VBDFile::READWRITE,
  67.       int use_index = 0, int cache_size = 8);
  68.  
  69.   // 02/04/1998 These constructors were added to allow an application
  70.   // to used different index and data files. No file extensions will
  71.   // be added to the file names.
  72.   POD(UString &dfname, UString &ifname,
  73.       VBDFile::AccessMode mode = VBDFile::READWRITE,
  74.       int use_index = 0, int cache_size = 8);
  75.   POD(const char *dfname, const char *ifname,
  76.       VBDFile::AccessMode mode = VBDFile::READWRITE,
  77.       int use_index = 0, int cache_size = 8);
  78.   
  79.   // 02/03/1998 Destructor modified to work with index files
  80.   ~POD() { Disconnect(); DisconnectIndex(); }
  81.   
  82. private:
  83.   POD(const POD &ob) { }            // Disallow coping
  84.   void operator=(const POD &ob) { } // Disallow assignment
  85.  
  86. public:
  87.   int Open(const UString &fname,
  88.        VBDFile::AccessMode mode = VBDFile::READWRITE, int add_ext = 1);
  89.   int Open(const char *fname,
  90.        VBDFile::AccessMode mode = VBDFile::READWRITE, int add_ext = 1);
  91.   void Disconnect();
  92.   int Create(const UString &fname, int add_ext = 1);
  93.   int Create(const char *fname, int add_ext = 1);
  94.   void Flush();
  95.   void Close() { Disconnect(); }
  96.   int Connect(VBDFilePtr &fp);
  97.   VBDFilePtr OpenDatabase() { return opendatabase; }
  98.   VBDFilePtr OpenDatabase() const { return opendatabase; }
  99.   int Exists() const { return exists; }
  100.   int Exists() { return exists; }
  101.  
  102. public: // 02/03/1998 Functions added to work with index files
  103.   int OpenIndex(const UString &fname,
  104.         VBDFile::AccessMode mode=VBDFile::READWRITE, int add_ext = 1);
  105.   int OpenIndex(const char *fname,
  106.         VBDFile::AccessMode mode=VBDFile::READWRITE, int add_ext = 1);
  107.   void DisconnectIndex();
  108.   int CreateIndex(const UString &fname, int add_ext = 1);
  109.   int CreateIndex(const char *fname, int add_ext = 1);
  110.   int ConnectIndex(VBDFilePtr &fp);
  111.   VBDFilePtr OpenIndexFile() { return openindexfile; }
  112.   VBDFilePtr OpenIndexFile() const { return openindexfile; }
  113.   int UsingIndex() { return using_index; }
  114.   int UsingIndex() const { return using_index; }
  115.   int RebuildIndex() { return rebuild_index; }
  116.   int RebuildIndex() const { return rebuild_index; }
  117.   Btree *Index() { return DBindex; }
  118.   Btree *Index() const { return DBindex; }
  119.  
  120.   // Allow appliction to reset rebuild_index member. 
  121.   void ResetIndexRebuild() { rebuild_index = 0; }
  122.  
  123.   // Tell POD Manager that index file and data file do not match.
  124.   void BuildNewIndex() { rebuild_index = 1; }
  125.   
  126.   // These functions were added to allow the application to enable
  127.   // and disable the index file routines for certain functions.
  128.   void DisableIndex() { using_index = 0; }
  129.   void EnableIndex() { using_index = 1; }
  130.  
  131. private:
  132.   VBDFilePtr opendatabase;  // VBD file pointer to the data file
  133.   VBDFilePtr openindexfile; // VBD file pointer to the index file
  134.   int exists;               // True if data file already exists
  135.  
  136. private: // 02/04/1998 Members added to work with index files
  137.   Btree *DBindex;    // Btree for the index file
  138.   int using_index;   // True if using an index file
  139.   int rebuild_index; // True if index file needs to be rebuilt  
  140. };
  141.  
  142. #endif // __POD_HPP
  143. // ----------------------------------------------------------- // 
  144. // ------------------------------- //
  145. // --------- End of File --------- //
  146. // ------------------------------- //
  147.